// Header Protection
#ifndef _MATRIX_H_
#define _MATRIX_H_

// Include Files
#include "Definitions.h"
#include "Vector.h"

// Namespace
namespace IE
{
	/////////////////////////////////////////////////////////////////////////////////
	// Type Definitions

	union matrix_t
	{
		vector_t row[4];
		float_t  arr[16];
		float_t  mat[4][4];
	};

	/////////////////////////////////////////////////////////////////////////////////
	// matrix_t Declarations

	matrix_t Matrix();

	matrix_t MatrixMul( matrix_t const &_lhs, matrix_t const &_rhs );

	matrix_t MatrixTranslation( float_t _fX, float_t _fY, float_t _fZ );

	matrix_t MatrixRotationX( float_t _fAngle );

	matrix_t MatrixRotationY( float_t _fAngle );

	matrix_t MatrixRotationZ( float_t _fAngle );
}

// Header Protection
#endif // _MATRIX_H_
